package Servlet;



import java.io.IOException;
import java.util.ArrayList;

import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import EntityBeans.Abilita;
import EntityBeans.EsperienzaLavorativa;
import EntityBeans.UtenteRegistrato;
import Sessions.AccessoSessionRemote;

/**
 * Servlet implementation class AccessoServlet
 */
public class AccessoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private RequestDispatcher d;
	private GestoreContesto contesto;   
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AccessoServlet() {
        super();
        contesto = new GestoreContesto();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			eseguiRichiesta(request, response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			eseguiRichiesta(request, response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void eseguiRichiesta(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, NamingException {
		
		AccessoSessionRemote gestore=contesto.getGestore(AccessoSessionRemote.class, "AccessoSessionRemote");
		
		String email = request.getParameter("email");
		String password = request.getParameter("password");
		
		ArrayList<UtenteRegistrato> utenteReg = gestore.cercaUtente(email, password);
		if (utenteReg==null){
			request.setAttribute("msg", "Errore di LogIn");
			d=request.getRequestDispatcher("Errore.jsp");
			d.forward(request, response);
		}
		else{
			
			/*
			ArrayList<EsperienzaLavorativa> esperienzeUtente = gestore.recuperaEsperienze(email);
			for(int i=0; i<esperienzeUtente.size(); i++){
				request.setAttribute("posizione" + i, esperienzeUtente.get(i).getPosizione());
				request.setAttribute("azienda" + i, esperienzeUtente.get(i).getAzienda());
			//	request.setAttribute("dataInizio" + i, esperienzeUtente.get(i).getDatainizio());
			//	request.setAttribute("dataFine" + i, esperienzeUtente.get(i).getDatafine());
				}
			
			request.setAttribute("size", esperienzeUtente.size());
			
			ArrayList<Abilita> abilitaUtente = gestore.recuperaAbilita(email);
			for(int i=0; i<abilitaUtente.size(); i++){
				request.setAttribute("nomeAbilita" + i, abilitaUtente.get(i).getNome());
				request.setAttribute("descrizione" + i, abilitaUtente.get(i).getDescrizione());
				
				
			}
			request.setAttribute("numeroAbilita", abilitaUtente.size());
			
			request.setAttribute("nomeSessione", utenteReg.get(0).getNome());
			request.setAttribute("cognomeSessione", utenteReg.get(0).getCognome());
			*/
			request.setAttribute("idSessione", utenteReg.get(0).getId());
			request.setAttribute("idRichiesta", utenteReg.get(0).getId());
			//Viene passata l'email per generare una sessione
			//request.setAttribute("email", email);
			
			d=request.getRequestDispatcher("Profilo.jsp");
			d.forward(request, response);
			
		}
	
	}

}
